<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let p = new Promise((res, rej) => {
                // res('ok')
                // rej('失败')
                setTimeout(() => {
                    res('01')
                }, 100);
            })
            // console.log(p);
            // 受执行函数的返回值影响
            // 返回的是非promise对象 - then 返回的promise 成功，结果值：返回值
            // 返回的是 promise对象 -then返回的promise 看 返回的promise是什么状态、结果值都相等
            // 抛错 - then返回的promise 失败，结果值：抛出的值
        p.then(val => {
            return val;
            // return function() {
            //     return new Promise(() => {})
            // }
            // return new Promise((res, rej) => {
            //     rej('error');
            // })
            // throw 'ok'
        }, rea => {
            // 非promise成功
            // return new Error('错误')
            return rea;
            // return new Promise(() => {})
            // throw 'ok';
        }).then(val => {
            console.log(val);
            // return undefined;
            return new Promise((res, rej) => {
                rej('错了')
            })
        }).then(val => {
            console.log(val);
        }, rea => {
            console.log('失败', rea);
        }).then(val => {
            console.log(val);
        })
    </script>
</body>

</html>